package com.charon.common.persistence;

import java.util.List;

import org.apache.ibatis.annotations.Select;

/**
 * @Description:    DAO支持类实现，增删改查
 * @author charon [248135724@qq.com]
 * @date:   2018年9月1日 下午8:14:04   
 */
public interface CrudDao<T> extends BaseDao<T>{
    /**
     * @Author Moment
     * @Description 根据ID获取单条数据
     * @Date 17:51 2018/7/7 0007
     * @Param id
     * @return
     **/
    public T get(String id);
    
    /**
      * @Author Moment
      * @Description 根据条件查询单数据
      * @Date 17:55 2018/7/7 0007
      * @Param entity 实体对象
      * @return 
      */
    public T get(T entity);

    /**
      * @Author Moment
      * @Description 根据条件，获取多条数据
      * @Date 17:59 2018/7/7 0007
      * @Param entity 对象
      * @return 查询结果
      */
    public List<T> getList(T eneity);

    /**
      * @Author Moment
      * @Description 获取所有数据
      * @Date 18:00 2018/7/7 0007
      * @return 查询结果
      */
    public List<T> getAll();

    /**
      * @Author Moment
      * @Description 根据ID删除
      * @Date 18:11 2018/7/7 0007
      * @return 删除数量，为空则说明未找到该条目
      */
    public Integer delete(String id);

    /**
      * @Author Moment
      * @Description
      * @Date 18:14 2018/7/7 0007
      * @Param eneity 对象，用作条件
      * @return 删除条目
      */
    public Integer delete(T entity);

    /**
      * @Author Moment
      * @Description 插入单条数据
     *      注意：insert，返回值是：新插入行的主键（primary key）；
     *            需要包含<selectKey>语句，才会返回主键，否则返回值为null。
      * @Date 18:18 2018/7/7 0007
      * @Param entity 对象
      * @return 插入
      */
    public Integer insert(T entity);

    /**
      * @Author Moment
      * @Description 更改数据
      * @Date 18:23 2018/7/7 0007
      * @Param eneity 对象
      * @return
      */
    public Integer update(T eneity);
}
